# coding=utf-8
import json
import requests
#和风天气开发平台https://dev.qweather.com/
#和风天气的API官方文档https://dev.qweather.com/docs/api/
#我的和风天气的API的KEY，详见和风天气控制台应用管理https://console.qweather.com/#/apps


mykey='xxxxxxxxxxxxxxxx'    #此处填写自己申请的和风天气API的KEY
location='101210401'

'''
"宁波","id":"101210401"
"海曙","id":"101210402"
"慈溪","id":"101210403"
"鄞州","id":"101210411"
"宁海","id":"101210408"
"北仑","id":"101210410"
"象山","id":"101210406"
"江北","id":"101210409"
"镇海","id":"101210412"
'''

#查询城市的ID号，得到结果，宁波鄞州区的ID号为101210411
#文档见https://dev.qweather.com/docs/api/geo/city-lookup/
#城市ID号详见  https://cdn.heweather.com/china-city-list.txt    编码Unicode（UTF-8）
url1 = 'https://geoapi.qweather.com/v2/city/lookup?location=ningbo&key='+mykey
f1=requests.get(url1)
#(f1.text)

url2 = 'https://devapi.qweather.com/v7/weather/now?location='+location+'&key=' + mykey
#查询实时天气
url3 = 'https://devapi.qweather.com/v7/weather/3d?location='+location+'&key=' + mykey
#查询3天预报
url4 = 'https://devapi.qweather.com/v7/air/now?location='+location+'&key=' + mykey


def Temperature_Now():    #查询实时天气
    f = requests.get(url2)
    #print(f.text)
    jsons = json.loads(f.text)
    #print(jsons)
    #print(jsons['now'])
    result = jsons['now']
    print('观测时间：', result['obsTime'])
    print('温度：', result['temp'],'摄氏度')
    print('体感温度：', result['feelsLike'],'摄氏度')
    print('天气状况：', result['text'])
    print('风向：', result['windDir'])
    print('风力等级：', result['windScale'],'级')
    print('风速：', result['windSpeed'],'km/h')
    print('湿度：', result['humidity'],'%')
    print('云量：', result['cloud'],'%')
    print()
    print()
'''
now.obsTime	数据观测时间
now.temp	温度，默认单位：摄氏度
now.feelsLike	体感温度，默认单位：摄氏度
now.icon	天气状况和图标的代码，图标可通过天气状况和图标下载
now.text	天气状况的文字描述，包括阴晴雨雪等天气状态的描述
now.wind360	风向360角度
now.windDir	风向
now.windScale	风力等级
now.windSpeed	风速，公里/小时
now.humidity	相对湿度，百分比数值
now.precip	当前小时累计降水量，默认单位：毫米
now.pressure	大气压强，默认单位：百帕
now.vis	能见度，默认单位：公里
now.cloud	云量，百分比数值
now.dew	露点温度
refer.sources	原始数据来源，或数据源说明，可能为空
'''

def Temperature_3Day():    #查询3天预报
    f = requests.get(url3)
    # print(f.text)
    jsons = json.loads(f.text)
    #print(jsons)
    #print(jsons['daily'])
    result = jsons['daily']  #此处为3个字典组成一个列表
    for i in result:
        print('预报日期：', i['fxDate'])
        print('最高温度：', i['tempMax'],'摄氏度')
        print('最低温度：', i['tempMin'],'摄氏度')
        print('天气状况：', i['textDay'])
        print('紫外线强度指数：', i['uvIndex'])
        print('风力等级：', i['windScaleDay'],'级')
        print('风速：', i['windSpeedDay'],'km/h')
        print('湿度：', i['humidity'],'%')
        print('云量：', i['cloud'],'%')
        print()
        print()
'''
daily.fxDate	预报日期
daily.sunrise	日出时间
daily.sunset	日落时间
daily.moonrise	月升时间
daily.moonset	月落时间
daily.moonPhase	月相名称
daily.tempMax	预报当天最高温度
daily.tempMin	预报当天最低温度
daily.iconDay	预报白天天气状况的图标代码，图标可通过天气状况和图标下载
daily.textDay	预报白天天气状况文字描述，包括阴晴雨雪等天气状态的描述
daily.iconNight	预报夜间天气状况的图标代码，图标可通过天气状况和图标下载
daily.textNight	预报晚间天气状况文字描述，包括阴晴雨雪等天气状态的描述
daily.wind360Day	预报白天风向360角度
daily.windDirDay	预报白天风向
daily.windScaleDay	预报白天风力等级
daily.windSpeedDay	预报白天风速，公里/小时
daily.wind360Night	预报夜间风向360角度
daily.WindDirNight	预报夜间当天风向
daily.windScaleNight	预报夜间风力等级
daily.windSpeedNight	预报夜间风速，公里/小时
daily.precip	预报当天总降水量，默认单位：毫米
daily.uvIndex	紫外线强度指数
daily.humidity	相对湿度，百分比数值
daily.pressure	大气压强，默认单位：百帕
daily.vis	能见度，默认单位：公里
daily.cloud	云量，百分比数值
refer.sources	原始数据来源，或数据源说明，可能为空
'''


def AirQuality_Now():    #查询实时空气质量
    f = requests.get(url4)
    #print(f.text)
    jsons = json.loads(f.text)
    #print(jsons)
    #print(jsons['now'])
    result = jsons['now']
    print('发布时间：', result['pubTime'])
    print('空气质量指数：', result['aqi'])
    print('空气质量指数等级：', result['category'])
    print('PM10：  ', result['pm10'])
    print('PM2.5：  ', result['pm2p5'])
    print('二氧化氮：', result['no2'])
    print('二氧化硫：', result['so2'])
    print('一氧化碳：', result['co'])
    print('臭氧：', result['o3'])
    print()
    print()

'''
now.pubTime	空气质量数据发布时间
now.aqi	空气质量指数
now.level	空气质量指数等级
now.category	空气质量指数级别
now.primary	空气质量的主要污染物，空气质量为优时，返回值为NA
now.pm10	PM10
now.pm2p5	PM2.5
now.no2	二氧化氮
now.so2	二氧化硫
now.co	一氧化碳
now.o3	臭氧
'''



if __name__ == '__main__':
    Temperature_Now()     #查询实时天气
    Temperature_3Day()    #查询3天预报
    AirQuality_Now()      #查询实时空气质量